import Cookie from 'js-cookie'
export default {
  state: {
    isCollapse: false, //用于控制菜单的展开还是收起
    //面包屑数据
    tabsList: [
      {
        path: '/',
        name: 'home',
        label: '首页',
        icon: 's-home',
        url: 'Home/Home'
      }
    ],
    menu: []
  },
  mutations: {
    //修改菜单展开收起的方法
    collapseMenu(state) {
      state.isCollapse = !state.isCollapse
    },
    //更新面包屑数据
    selectMenu(state, val) {
      //判断数据是否为首页
      if (val.name !== 'home') {
        // findIndex表示如果存在则返回当前数据的索引，不存在则返回-1
        const index = state.tabsList.findIndex(item => item.name === val.name)
        //如果不存在
        if (index === -1) {
          state.tabsList.push(val)
        }
      }
    },
    //删除指定的tag数据
    coloseTag(state, item) {
      // 第一种方法
      const index = state.tabsList.findIndex(x => x.name === item.name)
      // splice()第一个数表示删除的索引位置,第二个数表示删除的个数
      state.tabsList.splice(index, 1)
      //第二种方法
      // state.tabsList = state.tabsList.filter(x => x.name !== item.name)
    },
    //设置menu的数据
    setMenu(state, val) {
      state.menu = val
      //进行Cookie存储，跟本地存储一样
      Cookie.set('menu', JSON.stringify(val))
    },
    // 动态注册路由
    addMenu(state, router) {
      //判断缓存中是否有数据
      if (!Cookie.get('menu')) return
      const menu = JSON.parse(Cookie.get('menu'))
      state.menu = menu
      //组装动态路由的数据
      const menuArray = []
      menu.forEach(item => {
        //存在子路由的情况
        if (item.children) {
          item.children = item.children.map(item => {
            item.component = () => import(`../views/${item.url}`)
            return item
          })
          menuArray.push(...item.children)
        }else{
          // 不存在子路由的情况
          item.component = () => import(`../views/${item.url}`)
          menuArray.push(item)
        }
      })
      // console.log(menuArray, 'menuArray');
      //路由的动态添加
      menuArray.forEach(item => {
        router.addRoute('Main',item)
      })
    }
  }
}
